package 实践.class_03;

import java.util.Scanner;
//主要知识点：
//1. 三次反转法
//2. 字符串转整数：Integer.parseInt(nm[0]);
//3. 字符串数组转整数数组：Integer.parseInt(nums[i]);
//4. 数组反转：reverse(arr, 0, n - 1);

public class Demo_02 {
    public static void main(String[] args) {
        //下列代码适用于双数组
//        Scanner sc = new Scanner(System.in);
//        String[] nm = sc.nextLine().split(" ");
//        int n = Integer.parseInt(nm[0]);
//        int m = Integer.parseInt(nm[1]) % n; // 处理m大于n的情况
//        int[] arr = new int[n];
//        String[] nums = sc.nextLine().split(" ");
//        for (int i = 0; i < n; i++) {
//            arr[i] = Integer.parseInt(nums[i]);
//        }
//
//        // 1. 提取后m个元素
//        int[] temp = new int[m];
//        for (int i = 0; i < m; i++) {
//            temp[i] = arr[n - m + i];
//        }
//
//        // 2. 前n-m个元素整体后移m位
//        for (int i = n - 1; i >= m; i--) {
//            arr[i] = arr[i - m];
//        }
//
//        // 3. 将temp元素放回数组开头
//        for (int i = 0; i < m; i++) {
//            arr[i] = temp[i];
//        }
//
//        // 输出结果
//        for (int num : arr) {
//            System.out.print(num + " ");
//        }
//
         //下列代码适用于单数组（三次反转法）
        Scanner sc = new Scanner(System.in);
        String[] nm = sc.nextLine().split(" ");
        int n = Integer.parseInt(nm[0]);
        int m = Integer.parseInt(nm[1]) % n; // 处理m大于n的情况
        int[] arr = new int[n];
        String[] nums = sc.nextLine().split(" ");
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(nums[i]);
        }
        reverse(arr, 0, n - 1);
        reverse(arr, 0, m - 1);
        reverse(arr, m, n - 1);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
    static void reverse(int[] arr, int start, int end) {
        while (start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }
}
